package imai78gae.heya.model;

import imai78gae.heya.util.DateUtil;

import java.io.Serializable;
import java.util.Date;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import javax.jdo.annotations.Version;
import javax.jdo.annotations.VersionStrategy;

import com.google.appengine.api.datastore.Key;

/**
 * このアプリケーションを利用できるアカウントを表わすモデルクラスです。
 * 
 * @author imai78
 *
 */
@SuppressWarnings("serial")
@Version(strategy = VersionStrategy.VERSION_NUMBER)
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable="true")
public class UserInfo implements Serializable {

	/**
	 * アカウントを識別する為の{@link Key}です。
	 */
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Key userInfoKey;
	/**
	 * ログインIDです。
	 */
	@Persistent
	private String loginId;
	/**
	 * ログインパスワードです。
	 */
	@Persistent
	private String loginPw;
	/**
	 * ユーザ名です。
	 */
	@Persistent
	private String accountName;
	/**
	 * ユーザ登録を行った日です。
	 */
	@Persistent
	private Date registered;

	/**
	 * コンストラクタ。
	 */
	public UserInfo() {
		;
	}
	/**
	 * 引数ありコンストラクタ。
	 * 
	 * @param loginId
	 * @param loginPw
	 * @param accountName
	 */
	public UserInfo(String loginId, String loginPw, String accountName) {
		this();
		this.loginId = loginId;
		this.loginPw = loginPw;
		this.accountName = accountName;
		this.registered = DateUtil.getTodayDate();
	}

	public Key getUserInfoKey() {
		return userInfoKey;
	}
	public void setUserInfoKey(Key userInfoKey) {
		this.userInfoKey = userInfoKey;
	}
	public String getLoginId() {
		return loginId;
	}
	public void setLoginId(String loginId) {
		this.loginId = loginId;
	}
	public String getLoginPw() {
		return loginPw;
	}
	public void setLoginPw(String loginPw) {
		this.loginPw = loginPw;
	}
	public String getAccountName() {
		return accountName;
	}
	public void setAccountName(String accountName) {
		this.accountName = accountName;
	}
	public Date getRegistered() {
		return registered;
	}
	public void setRegistered(Date registered) {
		this.registered = registered;
	}

}
